<?php
class Back_ClassementsController extends Osml_Controller_Admin_Action
{

    public function init()
    {
        parent::init();
        $ajaxContext = $this->_helper->getHelper('AjaxContext');
        $ajaxContext->setAutoJsonSerialization(true);
        $ajaxContext->addActionContext('ajaxsynchro', array(
            'json'
        ))->initContext();
    }

    private function _getUrl()
    {
        return Back_Model_Config::recuperationValeurParCle("urlClassementBadmania", "valeur");
    }

    public function indexAction()
    {
        $url = $this->_getUrl();
        
        $this->view->url = $url;
    }

    public function ajaxsynchroAction()
    {
        $request = $this->getRequest();
        $url = $this->_getUrl();
        $flux = simplexml_load_file($url);
        $joueurs = json_decode(json_encode($flux), true);
        $joueurs = $joueurs['joueur'];
        
        $traitement = (int) $request->getParam("traitement", 0);
        
        $debut = $traitement * 10;
        $fin = $debut + 10;
        $insertion = "";
        for( $indice = $debut; $indice < $fin; $indice ++ ) {
            if ($indice >= count($joueurs)) {
                $traitement = "fin";
                break;
            }
            $joueur = $joueurs[$indice];
            
            $licence = $joueur['licence'];
            $classement = Back_Model_Classements::classementParLicence($licence);
            if (is_array($classement) && empty($classement)) {
                // Pas trouvé, on crée l'enregistrement
                $classement = new Back_Model_Classements($joueur);
            } else {
                $classement = $classement[0];
                $classement->setOptions($joueur);
            }
            $classement->sauver();
            $insertion .= ", " . $classement->getPrenom() . " " . $classement->getNom();
        }
        $insertion = "Insertion de (" . substr($insertion, 1) . ") effectué avec succès";
        
        if (is_int($traitement)) {
            $traitement = $traitement + 1;
        }
        $datas = array(
            'traitement' => $traitement, 
            'horodatage' => date(Jnd_Global_Constantes::FORMAT_DATE_WEB_LONG), 
            'message' => $insertion
        );
        
        echo json_encode($datas);
        die();
    }

    public function listeAction()
    {}

    public function classementjsonAction()
    {
        $request = $this->getRequest();
        $url = Back_Model_Config::recuperationValeurParCle("urlClassementBadmania", "valeur");
        $joueurs = simplexml_load_file($url);
        
        $recherche = $request->getParam("sSearch", "");
        $limiteDebut = $request->getParam("iDisplayStart", null);
        $limitePas = $request->getParam("iDisplayLength", -1);
        $sEcho = intval($request->getParam("sEcho"));
        
        $mapper = new Back_Model_Mapper_Classements();
        $table = $mapper->_getTable();
        
        $select = new Zend_Db_Table_Select($table);
        $select->from($table->info("name"));
        
        if ($recherche != "") {
            foreach ($mapper->getDict() as $champBase) {
                $select->orWhere("UCASE($champBase) like ?",  "%" . strtoupper($recherche) . "%");
            }
        }
        
        if ( !is_null($limiteDebut) && $limitePas != "-1") {
            $select->limit($limitePas, $limiteDebut);
//             $select->limitPage($sEcho, $limitePas);
        }
        
        $stmt = $select->query();
       
        $resultats = $stmt->fetchAll();
        $resultats = $mapper->unmapArray($resultats);
        
        /* Data set length after filtering */
        $iFilteredTotal = count($resultats);

        $iTotal = 0;
        $select2 = new Zend_Db_Table_Select($table);
        $iTotal = $select2->query()->rowCount();
                
        $output = array(
            "sEcho" => $sEcho, 
            "iTotalRecords" => $iTotal, 
            "iTotalDisplayRecords" => $iTotal, 
            "aaData" => array()
        );
        
        foreach ($resultats as $joueur) {
            $row = array();
            $row[] = $joueur['nom'];
            $row[] = $joueur['prenom'];
            $row[] = $joueur['licence'];
            $row[] = $joueur['sexe'];
            $row[] = $joueur['classementSimple'];
            $row[] = $joueur['classementDouble'];
            $row[] = $joueur['classementMixte'];
            $row['DT_RowId'] = $joueur['lienJoueur'];
            
            $output['aaData'][] = $row;
        }
        
        die(json_encode($output));
    }
    
    public function proxyAction(){
        $url = base64_decode($this->getRequest()->getParam("url", ''));
        $html = file_get_contents($url);
        die($html);
        $json['source'] = $html;
        die(json_encode($json));
    }
}